package ru.emms.codemeter.forms;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;

import javax.swing.*;
import java.awt.*;
import java.util.Map;

/**
 * Created by IntelliJ IDEA.
 * User: sasha.vin
 * Date: 10.08.2010
 * Time: 10:57:00
 * Рисование гистограммы
 */

public class BarChartGraphic
    extends ApplicationFrame {

    private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    private JFreeChart chart;

    public BarChartGraphic() {
        super("");
    }

    /**
     * создает область для рисования графика
     *
     * @return панель, где будет производится прорисовка
     */
    public JPanel createGraphicSpace() {
        chart = ChartFactory.createBarChart("", "Модули", "Значения метрик", dataset, PlotOrientation.VERTICAL, true, true, false);
        chart.setBackgroundPaint(Color.white);
        return new ChartPanel(chart);
    }

    /**
     * рисует график-гистограмму - значение метрики по модулю
     *
     * @param modules список пар имя модуля - значение метрики
     */
    public void createGraphic(Map<String, Long> modules) {

        dataset.clear();
        for (String moduleName : modules.keySet()) {
            dataset.addValue(modules.get(moduleName), moduleName, "");
        }
    }

    public void setGraphicName(String name) {
        chart.setTitle(name);
    }

    public JFreeChart getChart() {
        return chart;
    }

}
